package top.maochang.hou.config;


import top.maochang.hou.utils.DruidUtlis;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

/**
 * 事务过滤器
 *
 * 注意：
 * /* 表示当前工程下所有请求
 * 一定要记得把 BaseServlet 中的异常往外抛给 Filter 过滤器（因为这个事务处理利用了Filter会回来的特性）
 */
@WebFilter(filterName="transaction",value = "/*")
public class TransactionFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        try {
            chain.doFilter(request,response);
            DruidUtlis.commitAndClose();// 提交事务
        } catch (Exception e) {
            DruidUtlis.rollbackAndClose();//回滚事务
            e.printStackTrace();
        }
    }

}
